package org.reliablesource.prism.core;

import java.beans.PropertyChangeListener;

/**
 * 
 * Copyright (c) 2006, Reliable Source, Inc. All Rights Reserved
 * 
 * Created on: Mar 11, 2006
 * 
 * @author Dennis Park <a
 *         href="mailto:dennis.park@gmail.com">dennis.park@gmail.com</a>
 * @model abstract="true"
 */

public interface IPrismElement {

	/**
	 * 
	 * @param name
	 * @model
	 */
	public void setName(String name);

	/**
	 * 
	 * @return
	 * @model
	 */
	public String getName();

	/**
	 * 
	 * @return
	 * @model
	 */
	public IPrismElement getParent();

	/**
	 * 
	 * @return
	 * @model
	 */
	public Integer getId();
	
	public void addPropertyChangeListener(final PropertyChangeListener l);
	public void firePropertyChange(final String property, final Object oldValue, final Object newValue);
	public Object getEditableValue();
	public Object getPropertyValue(final Object id);
	public boolean isPropertySet(final Object id);
	public void removePropertyChangeListener(final PropertyChangeListener l);
	public void setPropertyValue(Object id, Object value);
	public void resetPropertyValue(Object id);
}
